home *** CD-ROM | disk | FTP | other *** search
- -> best reading with a tabsize of 2
-
- /* GadToolsBox GUI: E source generated by SrcGen v0.5 */
- /* (by Wouter & Martin Kuchinka & Jason) */
-
- OPT OSVERSION=37,PREPROCESS
-
- #define VERS '1.1'
-
- MODULE 'raphe/asciifp','raphe/freezewindow','raphe/directorylist'
-
- MODULE 'gadtools','libraries/gadtools'
- MODULE 'exec/memory','exec/lists','exec/nodes'
- MODULE 'graphics/modeid','graphics/rastport','graphics/displayinfo',
- 'graphics/text','graphics/view','graphics/gfx'
- MODULE 'intuition/intuition','intuition/screens','intuition/gadgetclass',
- 'intuition/iobsolete'
- MODULE 'utility/tagitem'
- MODULE 'devices/inputevent'
- MODULE 'reqtools','libraries/reqtools'
- MODULE 'asl','libraries/asl'
- MODULE 'locale','libraries/locale'
-
- ENUM ERROR_NONE,ERROR_CONTEXT,ERROR_GADGET,ERROR_SCRN,ERROR_VISUAL,ERROR_GT,
- ERROR_LOC,ERROR_WINDOW,ERROR_MENUS
-
- ENUM ALWAYSOPENED=1,DOUBLECLICK,STARTUPSDIR,DEFSTARTUP,QUALIFIER,SCREENMODE,
- GETSDIR,GETDEFS,GETSM,CANCEL,SAVE,USE,LISTVIEW,FONT,FSIZE,
- SOUNDS,EDITOR,LANGUAGE,GETEDITOR
-
- ENUM MSG_DCLICK,MSG_ALWAYSO,MSG_SOUNDS,MSG_LBUT,MSG_RBUT,MSG_MBUT,MSG_LALT,MSG_RALT,
- MSG_LSHIFT,MSG_RSHIFT,MSG_LCOM,MSG_RCOM,MSG_CTRL,MSG_TOOPENW,MSG_SDIR,MSG_DEFS,
- MSG_ED,MSG_LANG,MSG_SMODE,MSG_FONT,MSG_SAVE,MSG_USE,MSG_CANCEL,MSG_OK,
- MSG_PROJECT,MSG_ABOUT,MSG_QUIT,
- MSG_CHSMODE,MSG_CHFONT,MSG_CHDIR,MSG_CHED,
- MSG_ERROR,MSG_ERRDIR,
- MSG_CANT,MSG_ERRCONTEXT,MSG_ERRGADGETS,MSG_ERRSCREEN,MSG_ERRVISUAL,MSG_ERRGT,
- MSG_ERRLOC,MSG_ERROPENW,MSG_ERRMENUS
-
- ENUM MEN_ABOUT=1,MEN_QUIT
-
- RAISE ERROR_CONTEXT IF CreateContext()=NIL,
- ERROR_GADGET IF CreateGadgetA()=NIL
-
- OBJECT gadslist
- defstart
- startdir
- dclick
- alwayso
- sounds
- qual
- smode
- lv
- font
- editor
- lang
- ENDOBJECT
-
- DEF mainwindow=NIL:PTR TO window,
- mainwindowmenus,
- mainwindowglist,
- defstartwnd=NIL:PTR TO window,
- defstartglist=NIL,
- scr=NIL:PTR TO screen,
- visual=NIL,
- offx,offy,
- tattr:PTR TO textattr,ys,
- wbhere=FALSE,
- afp=NIL:PTR TO asciifp,fw=NIL:PTR TO freezewindows,dl=NIL:PTR TO directorylist,
- startupsdirstr:PTR TO CHAR,defstartupstr:PTR TO CHAR,
- editorstr:PTR TO CHAR,langstr:PTR TO CHAR,
- modeid,
- item:PTR TO menuitem,
- gad:gadslist,
- cat=NIL
-
- DEF ni:nameinfo
-
- PROC setupscreen()
- IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN ERROR_GT
- IF (scr:=LockPubScreen(NIL))=NIL THEN RETURN ERROR_SCRN
- tattr:=scr.font
- ys:=tattr.ysize
- IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN ERROR_VISUAL
- offx:=scr.wborleft
- offy:=scr.wbortop+scr.rastport.txheight+1
- ENDPROC
-
- PROC closedownscreen()
- IF visual THEN FreeVisualInfo(visual)
- IF scr THEN UnlockPubScreen(NIL,scr)
- IF gadtoolsbase THEN CloseLibrary(gadtoolsbase)
- ENDPROC
-
- PROC openmainwindowwindow()
- DEF g:PTR TO gadget,wbr
- DEF wleft,wtop,wwidth,wheight
- DEF displayid,dims:dimensioninfo
- DEF str[20]:STRING
- DEF soffy,gw,cs:PTR TO LONG -> gadw et comparestrings
- DEF stringInfo:PTR TO stringinfo
-
- soffy:=offy
- wbr:=scr.wborright
-
- g:=CreateContext({mainwindowglist})
-
- g:=CreateGadgetA(CHECKBOX_KIND,g,
- [offx+6,offy+2,26,ys+3,gcs(MSG_DCLICK),
- tattr,2,PLACETEXT_RIGHT,visual,DOUBLECLICK]:newgadget,
- [GTCB_CHECKED,afp.getkeyword(DOUBLECLICK),
- GT_UNDERSCORE,"_",
- TAG_END])
- gad.dclick:=g
-
- g:=CreateGadgetA(CHECKBOX_KIND,g,
- [offx+6,offy+6+ys,26,ys+3,gcs(MSG_ALWAYSO),tattr,1,
- PLACETEXT_RIGHT,visual,ALWAYSOPENED]:newgadget,
- [GT_UNDERSCORE,"_",
- GTCB_CHECKED,afp.getkeyword(ALWAYSOPENED),
- TAG_END])
- gad.alwayso:=g
-
- g:=CreateGadgetA(CHECKBOX_KIND,g,
- [offx+6,(2*ys)+offy+10,26,ys+3,gcs(MSG_SOUNDS),
- tattr,2,PLACETEXT_RIGHT,visual,SOUNDS]:newgadget,
- [GTCB_CHECKED,afp.getkeyword(SOUNDS),
- GT_UNDERSCORE,"_",
- TAG_END])
- gad.sounds:=g
-
- offy:=3*ys+soffy+17
- gw:=maxwidth(cs:=[gcs(MSG_LBUT),gcs(MSG_RBUT),gcs(MSG_MBUT),
- gcs(MSG_LALT),gcs(MSG_RALT),
- gcs(MSG_LSHIFT),gcs(MSG_RSHIFT),
- gcs(MSG_LCOM),gcs(MSG_RCOM),gcs(MSG_CTRL),NIL])
- g:=CreateGadgetA(CYCLE_KIND,g,
- [offx+6,offy+3,gw+30,ys+5,gcs(MSG_TOOPENW),tattr,3,
- PLACETEXT_RIGHT,visual,QUALIFIER]:newgadget,
- [GTCY_LABELS,cs,
- GT_UNDERSCORE,"_",
- GTCY_ACTIVE, afp.getkeyword(QUALIFIER),
- TAG_END])
- gad.qual:=g
-
- offy:=4*ys+soffy+28
- gw:=maxwidth([gcs(MSG_SDIR),gcs(MSG_DEFS),gcs(MSG_ED),gcs(MSG_LANG)])+8
- g:=CreateGadgetA(STRING_KIND,g, -> 201
- [offx+gw,offy+3,(342-gw),ys+6,gcs(MSG_SDIR),tattr,6,
- PLACETEXT_LEFT,visual,STARTUPSDIR]:newgadget,
- [GTST_MAXCHARS,$200,
- GT_UNDERSCORE,"_",
- GTST_STRING, afp.getkeyword(STARTUPSDIR),
- TAG_END])
- stringInfo:=g.specialinfo
- startupsdirstr:=stringInfo.buffer
- gad.startdir:=g
-
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(25+wbr),offy+3,20,ys+6,'*',tattr,9,PLACETEXT_IN,visual,
- GETSDIR]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
- g:=CreateGadgetA(STRING_KIND,g,
- [offx+gw,ys+offy+10,(342-gw),ys+6,gcs(MSG_DEFS),tattr,7,
- PLACETEXT_LEFT,visual,DEFSTARTUP]:newgadget,
- [GTST_MAXCHARS,$200,
- GT_UNDERSCORE,"_",
- GTST_STRING, afp.getkeyword(DEFSTARTUP),
- TAG_END])
- stringInfo:=g.specialinfo
- defstartupstr:=stringInfo.buffer
- gad.defstart:=g
-
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(25+wbr),ys+offy+10,20,ys+6,'*',tattr,9,PLACETEXT_IN,visual,
- GETDEFS]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
- g:=CreateGadgetA(STRING_KIND,g,
- [offx+gw,(2*ys)+offy+17,(342-gw),ys+6,gcs(MSG_ED),tattr,7,
- PLACETEXT_LEFT,visual,EDITOR]:newgadget,
- [GTST_MAXCHARS,$200,
- GT_UNDERSCORE,"_",
- GTST_STRING, afp.getkeyword(EDITOR),
- TAG_END])
- stringInfo:=g.specialinfo
- editorstr:=stringInfo.buffer
- gad.editor:=g
-
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(25+wbr),(2*ys)+offy+17,20,ys+6,'*',tattr,9,PLACETEXT_IN,visual,
- GETEDITOR]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
- g:=CreateGadgetA(STRING_KIND,g,
- [offx+gw,(3*ys)+offy+24,(364-gw),ys+6,gcs(MSG_LANG),tattr,7,
- PLACETEXT_LEFT,visual,LANGUAGE]:newgadget,
- [GTST_MAXCHARS,$200,
- GT_UNDERSCORE,"_",
- GTST_STRING, afp.getkeyword(LANGUAGE),
- TAG_END])
- stringInfo:=g.specialinfo
- langstr:=stringInfo.buffer
- gad.lang:=g
-
- offy:=8*ys+61+soffy
- gw:=maxwidth([gcs(MSG_SMODE),gcs(MSG_FONT)])+8
- GetDisplayInfoData(NIL, ni, SIZEOF nameinfo, DTAG_NAME, modeid)
- g:=CreateGadgetA(TEXT_KIND,g,
- [offx+gw,offy+3,(342-gw),ys+6,gcs(MSG_SMODE),tattr,8,
- PLACETEXT_LEFT,visual,SCREENMODE]:newgadget,
- [GTTX_BORDER,1,
- GTTX_TEXT,ni.name,
- GT_UNDERSCORE,"_",
- TAG_END])
- gad.smode:=g
-
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(25+wbr),offy+3,20,ys+6,'*',tattr,9,PLACETEXT_IN,visual,
- GETSM]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
- StringF(str,'\s(0,24) \d',afp.getkeyword(FONT),afp.getkeyword(FSIZE))
- g:=CreateGadgetA(TEXT_KIND,g,
- [offx+gw,ys+offy+10,(342-gw),ys+6,gcs(MSG_FONT),tattr,8,
- PLACETEXT_LEFT,visual,NIL]:newgadget,
- [GTTX_BORDER,1,
- GTTX_TEXT,str,
- GT_UNDERSCORE,"_",
- TAG_END])
- gad.font:=g
-
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(25+wbr),ys+offy+10,20,ys+6,'*',tattr,9,PLACETEXT_IN,visual,
- FONT]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
-
- offy:=10*ys+80+soffy
- g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+6,offy+3,92,ys+6,gcs(MSG_SAVE),tattr,12,PLACETEXT_IN,
- visual,SAVE]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g:=CreateGadgetA(BUTTON_KIND,g,
- [offx+139,offy+3,92,ys+6,gcs(MSG_USE),tattr,12,PLACETEXT_IN,
- visual,USE]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g:=CreateGadgetA(BUTTON_KIND,g,
- [-(97+wbr),offy+3,92,ys+6,gcs(MSG_CANCEL),tattr,10,PLACETEXT_IN,
- visual,CANCEL]:newgadget,
- [GT_UNDERSCORE,"_",
- TAG_END])
- g.flags:=g.flags OR GFLG_RELRIGHT
-
- IF (mainwindowmenus:=CreateMenusA(
- [NM_TITLE,0,gcs(MSG_PROJECT),0,0,0,0,
- NM_ITEM,0,gcs(MSG_ABOUT),'?',0,0,MEN_ABOUT,
- NM_ITEM,0,NM_BARLABEL,0,0,0,0,
- NM_ITEM,0,gcs(MSG_QUIT),'Q',0,0,MEN_QUIT,
- 0,0,0,0,0,0,0]:newmenu,NIL))=NIL THEN RETURN ERROR_MENUS
- IF LayoutMenusA(mainwindowmenus,visual,NIL)=FALSE THEN RETURN ERROR_MENUS
-
- wwidth:=370
- wheight:=11*ys+92
- offy:=soffy
-
- displayid:=GetVPModeID(scr.viewport)
- GetDisplayInfoData(NIL,dims,SIZEOF dimensioninfo,DTAG_DIMS,displayid)
- wleft:=-scr.viewport.dxoffset+((dims.stdoscan.maxx-wwidth)/2)
- wtop:=-scr.viewport.dyoffset+((dims.stdoscan.maxy-wheight)/2)
-
- IF (mainwindow:=OpenWindowTagList(NIL,
- [WA_LEFT,wleft,
- WA_TOP,wtop,
- WA_INNERWIDTH,wwidth,
- WA_INNERHEIGHT,wheight,
- WA_IDCMP,IDCMP_NEWSIZE OR IDCMP_REFRESHWINDOW OR IDCMP_GADGETDOWN OR
- IDCMP_GADGETUP OR IDCMP_MENUPICK OR IDCMP_CLOSEWINDOW OR
- IDCMP_VANILLAKEY,
- WA_FLAGS,WFLG_DRAGBAR OR WFLG_DEPTHGADGET OR
- WFLG_CLOSEGADGET OR WFLG_SIZEBBOTTOM OR WFLG_SMART_REFRESH OR
- WFLG_ACTIVATE, ->OR WFLG_SIZEGADGET,
- WA_TITLE,{strvers}+6,
- WA_CUSTOMSCREEN,scr,
- WA_MINWIDTH,wwidth,
- WA_MINHEIGHT,wheight,
- WA_MAXWIDTH,-1,
- WA_MAXHEIGHT,offy+132,
- WA_AUTOADJUST,TRUE,
- WA_NEWLOOKMENUS,TRUE,
- WA_GADGETS,mainwindowglist,
- TAG_END]))=NIL THEN RETURN ERROR_WINDOW
- drawbevel(mainwindow)
- IF SetMenuStrip(mainwindow,mainwindowmenus)=FALSE THEN RETURN ERROR_MENUS
- Gt_RefreshWindow(mainwindow,NIL)
- ENDPROC
-
- PROC drawbevel(win:PTR TO window)
- DEF rport,width,tags
- rport:=win.rport
- width:=win.width-offx-4
- tags:=[GT_VISUALINFO,visual,TAG_END]
-
- DrawBevelBoxA(rport,offx,offy,width,3*ys+17,tags)
- DrawBevelBoxA(rport,offx,3*ys+17+offy,width,ys+11,tags)
- DrawBevelBoxA(rport,offx,4*ys+28+offy,width,4*ys+33,tags)
- DrawBevelBoxA(rport,offx,8*ys+61+offy,width,2*ys+19,tags)
- DrawBevelBoxA(rport,offx,10*ys+80+offy,width,12+ys,tags)
- ENDPROC
-
- PROC closemainwindowwindow()
- IF mainwindow
- ClearMenuStrip(mainwindow)
- IF mainwindowmenus THEN FreeMenus(mainwindowmenus)
- CloseWindow(mainwindow)
- ENDIF
- IF mainwindowglist THEN FreeGadgets(mainwindowglist)
- ENDPROC
-
- PROC opendefstartwindow() HANDLE
- DEF g:PTR TO gadget,lvw,lvh,item
- DEF err,ioerr,errstr[128]:STRING,ch[128]:STRING
- IF (g:=CreateContext({defstartglist}))=NIL THEN RETURN ERROR_CONTEXT
- err,ioerr:=dl.dirlist(startupsdirstr,DLF_NODIRS,'~(#?.info|#?.bak)')
- IF err
- StringF(ch,'\s\n',gcs(MSG_ERRDIR))
- Fault(ioerr,ch,errstr,128)
- req(errstr,gcs(MSG_ERROR))
- RETURN FALSE
- ENDIF
- lvw:=dl.maxlen*8+28
- IF dl.total()>10 THEN lvh:=10*ys+4 ELSE lvh:=dl.total()*ys+4
- item:=dl.getpos(defstartupstr)
- IF item=-1 THEN item:=0
- IF (g:=CreateGadgetA(LISTVIEW_KIND,g,
- [0,0,lvw,lvh,'',tattr,1,0,visual,LISTVIEW]:newgadget,
- [GTLV_LABELS,dl.dirlist,
- GTLV_SHOWSELECTED,0,
- GTLV_TOP,item,
- GTLV_SELECTED,item,
- TAG_END]))=NIL THEN RETURN ERROR_GADGET
- gad.lv:=g
- IF (defstartwnd:=OpenWindowTagList(NIL,
- [WA_LEFT,mainwindow.leftedge+mainwindow.width-30,
- WA_TOP,mainwindow.topedge+offy+66,
- WA_WIDTH,lvw,
- WA_HEIGHT,lvh,
- WA_IDCMP,IDCMP_GADGETDOWN OR IDCMP_GADGETUP OR IDCMP_INACTIVEWINDOW OR
- IDCMP_RAWKEY OR IDCMP_MOUSEBUTTONS OR LISTVIEWIDCMP,
- WA_FLAGS,WFLG_SMART_REFRESH OR WFLG_ACTIVATE OR WFLG_RMBTRAP OR WFLG_BORDERLESS,
- WA_CUSTOMSCREEN,scr,
- WA_AUTOADJUST,TRUE,
- WA_NEWLOOKMENUS,TRUE,
- WA_GADGETS,defstartglist,
- TAG_END]))=NIL THEN RETURN ERROR_WINDOW
- Gt_RefreshWindow(defstartwnd,NIL)
- EXCEPT
- closedefstartwindow()
- RETURN FALSE
- ENDPROC TRUE
-
- PROC closedefstartwindow()
- IF defstartwnd THEN CloseWindow(defstartwnd)
- IF defstartglist THEN FreeGadgets(defstartglist)
- defstartwnd:=NIL
- defstartglist:=NIL
- ENDPROC
-
- PROC process(win:PTR TO window)
- DEF running=TRUE, userdata,g:PTR TO gadget
- DEF node:PTR TO ln
- DEF bool
- DEF class,code,iaddr,qual,mainwin=FALSE
- IF win=mainwindow THEN mainwin:=TRUE
-
- WHILE running
- class,code,iaddr,qual:=wait4message(win)
- SELECT class
- CASE IDCMP_CLOSEWINDOW ; running:=FALSE
- CASE IDCMP_MOUSEBUTTONS ; IF code=MENUDOWN THEN running:=FALSE
- CASE IDCMP_GADGETUP
- g:=iaddr
- userdata:=g.userdata
- SELECT userdata
- CASE GETSDIR
- fw.freezewindow(win)
- getfile(TRUE)
- fw.activatewindow(win)
- CASE GETDEFS
- fw.freezewindow(win)
- IF opendefstartwindow()
- process(defstartwnd)
- closedefstartwindow()
- ENDIF
- fw.activatewindow(win)
- CASE GETEDITOR
- getfile()
- CASE GETSM
- fw.freezewindow(win)
- getsmode()
- fw.activatewindow(win)
- CASE CANCEL ; running:=FALSE
- CASE SAVE
- save()
- running:=FALSE
- CASE USE
- save(TRUE)
- running:=FALSE
- CASE LISTVIEW
- node:=dl.getnode(code)
- Gt_SetGadgetAttrsA(gad.defstart,mainwindow,NIL,[GTST_STRING,node.name,NIL])
- running:=FALSE
- CASE FONT
- getfont()
- ENDSELECT
-
- CASE IDCMP_INACTIVEWINDOW
- running:=FALSE
- CASE IDCMP_MENUPICK
- g:=code AND $FFFF
- WHILE g<>MENUNULL
- item:=ItemAddress(win.menustrip,g)
- userdata:=GTMENUITEM_USERDATA(item)
- SELECT userdata
- CASE MEN_ABOUT ;req('StartupSelectorPrefs\nVersion '+VERS+'\n'+
- 'Copyright © 1997 by RaphE\n\nFor\n\n'+
- 'StartupSelector\n'+
- 'Copyright © 1996-97\nMoonchild Prod.\n',gcs(MSG_ABOUT))
- CASE MEN_QUIT ; running:=FALSE
- ENDSELECT
- g:=item.nextselect AND $FFFF
- ENDWHILE
-
- CASE IDCMP_VANILLAKEY
- SELECT 128 OF code
- CASE "a","A" -> alwaysopened
- Gt_GetGadgetAttrsA(gad.alwayso,mainwindow,NIL,[GTCB_CHECKED,{bool},NIL])
- bool:=IF bool THEN 0 ELSE 1
- Gt_SetGadgetAttrsA(gad.alwayso,mainwindow,NIL,[GTCB_CHECKED,bool,NIL])
- CASE "c","C" -> doubleclick
- Gt_GetGadgetAttrsA(gad.dclick,mainwindow,NIL,[GTCB_CHECKED,{bool},NIL])
- bool:=IF bool THEN 0 ELSE 1
- Gt_SetGadgetAttrsA(gad.dclick,mainwindow,NIL,[GTCB_CHECKED,bool,NIL])
- CASE "o","O" -> qualifier
- Gt_GetGadgetAttrsA(gad.qual,mainwindow,NIL,[GTCY_ACTIVE,{qual},NIL])
- INC qual
- IF qual=9 THEN qual:=0
- Gt_SetGadgetAttrsA(gad.qual,mainwindow,NIL,[GTCY_ACTIVE,qual,NIL])
- CASE "s" -> startupdirs
- ActivateGadget(gad.startdir,mainwindow,NIL)
- CASE "S" -> startupdirs requester
- fw.freezewindow(win)
- getfile(TRUE)
- fw.activatewindow(win)
- CASE "D" -> defaultstartup
- ActivateGadget(gad.defstart,mainwindow,NIL)
- CASE "d" -> defaultstartup requester
- fw.freezewindow(win)
- opendefstartwindow()
- process(defstartwnd)
- closedefstartwindow()
- fw.activatewindow(win)
- CASE "f","F" -> font
- getfont()
- CASE "m","M" -> screenmode
- fw.freezewindow(win)
- getsmode()
- fw.activatewindow(win)
- CASE "e","E" -> save
- save()
- running:=FALSE
- CASE "l","L" -> cancel
- running:=FALSE
- ENDSELECT
- CASE IDCMP_RAWKEY
- SELECT code
- CASE 68 -> RETURN
- Gt_GetGadgetAttrsA(gad.lv,win,NIL,[GTLV_SELECTED,{bool},NIL])
- node:=dl.getnode(bool)
- Gt_SetGadgetAttrsA(gad.defstart,mainwindow,NIL,[GTST_STRING,node.name,NIL])
- running:=FALSE
- CASE 69 -> ESC
- running:=FALSE
- CASE 76 -> UP
- Gt_GetGadgetAttrsA(gad.lv,win,NIL,[GTLV_SELECTED,{bool},NIL])
- DEC bool
- IF bool<0 THEN bool:=0
- Gt_SetGadgetAttrsA(gad.lv,win,NIL,[GTLV_SELECTED,bool,NIL])
- CASE 77 -> DOWN
- Gt_GetGadgetAttrsA(gad.lv,win,NIL,[GTLV_SELECTED,{bool},NIL])
- INC bool
- Gt_SetGadgetAttrsA(gad.lv,win,NIL,[GTLV_SELECTED,bool,NIL])
- ENDSELECT
-
- ENDSELECT
- ENDWHILE
- ENDPROC
-
- PROC save(use=FALSE)
- DEF bool
- afp.setkeyword(STARTUPSDIR,startupsdirstr)
- afp.setkeyword(DEFSTARTUP,defstartupstr)
- afp.setkeyword(EDITOR,editorstr)
- afp.setkeyword(LANGUAGE,langstr)
- Gt_GetGadgetAttrsA(gad.dclick,mainwindow,NIL,[GTCB_CHECKED,{bool},NIL])
- afp.setkeyword(DOUBLECLICK,bool)
- Gt_GetGadgetAttrsA(gad.alwayso,mainwindow,NIL,[GTCB_CHECKED,{bool},NIL])
- afp.setkeyword(ALWAYSOPENED,bool)
- Gt_GetGadgetAttrsA(gad.sounds,mainwindow,NIL,[GTCB_CHECKED,{bool},NIL])
- afp.setkeyword(SOUNDS,bool)
- Gt_GetGadgetAttrsA(gad.qual,mainwindow,NIL,[GTCY_ACTIVE,{bool},NIL])
- afp.setkeyword(QUALIFIER,bool)
- afp.setkeyword(SCREENMODE,modeid)
- IF Not(use) THEN afp.save()
- afp.save('RAM:startupselector.prefs')
- ENDPROC
-
- PROC wait4message(win:PTR TO window)
- DEF mes:PTR TO intuimessage,port
- DEF class=NIL,code,iaddr,qual
- port:=win.userport
- REPEAT
- IF mes:=Gt_GetIMsg(port)
- IF (class:=mes.class)=IDCMP_REFRESHWINDOW
- Gt_BeginRefresh(win)
- Gt_EndRefresh(win,TRUE)
- ENDIF
- code:=mes.code
- iaddr:=mes.iaddress
- qual:=mes.qualifier
- Gt_ReplyIMsg(mes)
- ELSE
- WaitPort(port)
- ENDIF
- UNTIL class
- ENDPROC class,code,iaddr
-
- PROC getfile(nofile=FALSE)
- DEF rtfreq:PTR TO rtfilerequester
- DEF freq:PTR TO filerequester
- DEF fname[108]:STRING,dir[$200]:STRING
- DEF title
-
- fw.freezewindow(mainwindow)
-
- IF nofile
- title:=gcs(MSG_CHDIR)
- ELSE
- title:=gcs(MSG_CHED)
- StrCopy(fname,FilePart(editorstr))
- StrCopy(dir,editorstr,PathPart(editorstr)-editorstr)
- ENDIF
-
- IF reqtoolsbase
- IF (rtfreq:=RtAllocRequestA(RT_FILEREQ,NIL))
- IF nofile
- RtChangeReqAttrA(rtfreq,[RTFI_DIR,startupsdirstr,NIL])
- ELSE
- RtChangeReqAttrA(rtfreq,[RTFI_DIR,dir,NIL])
- ENDIF
- RtFileRequestA(rtfreq,fname, title,
- [RT_WINDOW, mainwindow,
- RTFI_FLAGS, IF nofile THEN FREQF_NOFILES ELSE NIL,
- NIL])
- IF nofile
- Gt_SetGadgetAttrsA(gad.startdir,mainwindow,NIL,[GTST_STRING,rtfreq.dir,NIL])
- ELSE
- StrCopy(dir,rtfreq.dir)
- AddPart(dir,fname,$200)
- Gt_SetGadgetAttrsA(gad.editor,mainwindow,NIL,[GTST_STRING,dir,NIL])
- ENDIF
- RtFreeRequest(rtfreq)
- ENDIF
- ELSEIF aslbase
- IF (freq:=AllocAslRequest(ASL_FILEREQUEST,NIL))
- AslRequest(freq, [ASLFR_WINDOW, mainwindow,
- ASLFR_TITLETEXT, title,
- ASLFR_INITIALFILE, fname,
- ASLFR_INITIALDRAWER, dir,
- ASLFR_DRAWERSONLY, TRUE,
- NIL])
- IF nofile
- Gt_SetGadgetAttrsA(gad.startdir,mainwindow,NIL,[GTST_STRING,freq.drawer,NIL])
- ELSE
- StrCopy(dir,freq.drawer)
- AddPart(dir,freq.file,$200)
- Gt_SetGadgetAttrsA(gad.editor,mainwindow,NIL,[GTST_STRING,dir,NIL])
- ENDIF
- FreeAslRequest(freq)
- ENDIF
- ENDIF
-
- fw.activatewindow(mainwindow)
- ENDPROC
-
- PROC getsmode()
- DEF rtsmreq:PTR TO rtscreenmoderequester
- DEF smreq:PTR TO screenmoderequester
-
- fw.freezewindow(mainwindow)
-
- IF aslbase
- IF (smreq:=AllocAslRequest(ASL_SCREENMODEREQUEST,NIL))
- AslRequest(smreq,[ASLSM_WINDOW, mainwindow,
- ASLSM_TITLETEXT, gcs(MSG_CHSMODE),
- ASLSM_INITIALDISPLAYID, modeid,
- ASLSM_INITIALLEFTEDGE, mainwindow.leftedge+mainwindow.width-30,
- ASLSM_INITIALTOPEDGE, mainwindow.topedge+offy+85,
- ASLSM_INITIALWIDTH, 256,
- ASLSM_INITIALHEIGHT, 141,
- NIL])
- modeid:=smreq.displayid
- FreeAslRequest(smreq)
- ENDIF
- ELSEIF reqtoolsbase
- IF (rtsmreq:=RtAllocRequestA(RT_SCREENMODEREQ,NIL))
- RtScreenModeRequestA(rtsmreq, gcs(MSG_CHSMODE),
- [RT_WINDOW, mainwindow,
- RT_LEFTOFFSET, mainwindow.leftedge+mainwindow.width-30,
- RT_TOPOFFSET, mainwindow.topedge+offy+85,
- NIL])
- modeid:=rtsmreq.displayid
- RtFreeRequest(rtsmreq)
- ENDIF
- ENDIF
-
- GetDisplayInfoData(NIL, ni, SIZEOF nameinfo, DTAG_NAME, modeid)
- Gt_SetGadgetAttrsA(gad.smode,mainwindow,NIL,[GTTX_TEXT,ni.name,NIL])
-
- fw.activatewindow(mainwindow)
- ENDPROC
-
- PROC getfont()
- DEF rtfontreq:PTR TO rtfontrequester
- DEF fontreq:PTR TO fontrequester
- DEF str[30]:STRING
-
- fw.freezewindow(mainwindow)
-
- IF aslbase
- IF (fontreq:=AllocAslRequest(ASL_FONTREQUEST,NIL))
- AslRequest(fontreq,[ASLFO_WINDOW, mainwindow,
- ASLFO_TITLETEXT, gcs(MSG_CHFONT),
- ASLFO_INITIALLEFTEDGE, mainwindow.leftedge+mainwindow.width-100,
- ASLFO_INITIALTOPEDGE, mainwindow.topedge+offy+10,
- ASLFO_INITIALNAME, afp.getkeyword(FONT),
- ASLFO_INITIALSIZE, afp.getkeyword(FSIZE),
- NIL])
- StringF(str,'\s(0,24) \d',fontreq.attr.name,fontreq.attr.ysize)
- afp.setkeyword(FONT,fontreq.attr.name)
- afp.setkeyword(FSIZE,fontreq.attr.ysize)
- FreeAslRequest(fontreq)
- ENDIF
- ELSEIF reqtoolsbase
- ENDIF
-
- Gt_SetGadgetAttrsA(gad.font,mainwindow,NIL,[GTTX_TEXT,str,NIL])
-
- fw.activatewindow(mainwindow)
- ENDPROC
-
- PROC req(msg,title,buttons=NIL)
- IF buttons=NIL THEN buttons:=gcs(MSG_OK)
- IF reqtoolsbase
- RETURN RtEZRequestA(msg,buttons,0,0,[ RTEZ_FLAGS, EZREQF_CENTERTEXT,
- RT_REQPOS, REQPOS_CENTERSCR,
- RTEZ_REQTITLE,title,
- NIL])
- ELSE
- RETURN EasyRequestArgs(NIL,[20,0,title,msg,buttons],0,NIL)
- ENDIF
- ENDPROC
-
- PROC gcs(id) -> get catalog string
- DEF strs:PTR TO LONG
-
- strs:=[ 'Double _click to launch startup',
- 'Window _always opened',
- 'Sounds',
- 'Left button','Right button','Middle button',
- 'Left Alt','Right Alt','Left Shift','Right Shift',
- 'Left Command','Right Command','Control',
- 'to _open the window',
- '_Startups dir:','_Default startup:',
- 'Path to Editor:','Language:',
- 'Screen _mode:','_Font:',
- 'Sav_e','Use','Cance_l','Ok',
- 'Project','About','Quit',
- 'Choose a screen mode',
- 'Choose a font',
- 'Choose a directory',
- 'Choose an editor',
- 'Error !',
- 'Problem while listing directory',
- 'Can\at','create context','create gadgets','lock screen',
- 'get visual infos','open gadtools.library v37+',
- 'open locale.library v38+',
- 'open window','create menus'
- ]:LONG
- ENDPROC GetCatalogStr(cat,id,strs[id])
-
-
- PROC maxwidth(strs:PTR TO LONG)
- DEF w,j,mw=0
- FOR j:=0 TO ListLen(strs)-1
- IF strs[j]
- IF (w:=textwidth(strs[j]))>mw THEN mw:=w
- ENDIF
- ENDFOR
- ENDPROC mw
-
- PROC textwidth(text) IS IntuiTextLength([0,0,0,0,0,tattr,text,NIL]:intuitext)
-
- PROC main() HANDLE
- DEF err=ERROR_NONE,ls,fh,ch[256]:STRING
-
- IF (localebase:=OpenLibrary('locale.library',38))=NIL THEN Raise(ERROR_LOC)
-
- ls:= ['LEFTBUTTON','RIGHTBUTTON','MIDDLEBUTTON',
- 'LEFTALT','RIGHTALT','LEFTSHIFT','RIGHTSHIFT',
- 'LEFTCOMMAND','RIGHTCOMMAND','CONTROL']
-
- NEW afp.new([
- ['Double click ?', DOUBLECLICK, VAL_YESNO, YES],
- ['Window always opened ?', ALWAYSOPENED, VAL_YESNO, NO],
- ['Sounds ?', SOUNDS, VAL_ONOFF, ON],
-
- ['Path to editor:', EDITOR, VAL_STR, 'C:Ed'],
- ['Startups directory:', STARTUPSDIR, VAL_STR, 'S:Start/'],
- ['Default startup:', DEFSTARTUP, VAL_STR, {startseq}],
- ['Language:', LANGUAGE, VAL_STR, 'anglais'],
-
- ['Qualifier:', QUALIFIER, ls, 0],
-
- ['Screen mode:', SCREENMODE, VAL_HEX, $29000],
- ['Font:', FONT, VAL_STR, 'topaz.font'],
- ['Font size:', FSIZE, VAL_DEC, 8],
-
- ['Last startup:', NIL, VAL_STR, {startseq}],
- ['Disable User-Startup ?', NIL, VAL_YESNO, NO],
- ['Disable WBStartup ?', NIL, VAL_YESNO, NO]
- ])
- IF afp.load({usename}) THEN afp.load({prefsname})
-
- cat:=OpenCatalogA(NIL,'StartupSelectorPrefs.catalog',
- [OC_LANGUAGE,afp.getkeyword(LANGUAGE),
- NIL])
-
- afp.setstringvers({strvers})
- modeid:=afp.getkeyword(SCREENMODE)
-
- NEW fw.init()
- NEW dl.new()
-
- reqtoolsbase:=OpenLibrary('reqtools.library',37)
- aslbase:=OpenLibrary('asl.library',36)
-
- IF (err:=setupscreen())<>ERROR_NONE THEN Raise(err)
- IF FindTask('Workbench')
- wbhere:=TRUE
- ELSE
- fh:=Open({scriptname},NEWFILE)
- Write(fh,{monitors},StrLen({monitors}))
- Close(fh)
-
- Execute({executestr},0,0)
- DeleteFile({scriptname})
- ENDIF
- openmainwindowwindow()
- process(mainwindow)
- closemainwindowwindow()
- IF CtrlC() THEN Raise(ERROR_NONE)
- EXCEPT DO
- IF exception
-
- StringF(ch,'\s \s !', gcs(MSG_CANT),
- ListItem([gcs(MSG_ERRCONTEXT),gcs(MSG_ERRGADGETS),
- gcs(MSG_ERRSCREEN),gcs(MSG_ERRVISUAL),
- gcs(MSG_ERRGT),gcs(MSG_ERRLOC),
- gcs(MSG_ERROPENW),gcs(MSG_ERRMENUS)
- ],exception-1))
- req(ch,gcs(MSG_ERROR))
- ENDIF
- IF afp AND (FileLength({prefsname})=TRUE) THEN afp.save()
- IF afp THEN END afp
- END fw
- END dl
- closedownscreen()
- IF aslbase THEN CloseLibrary(aslbase)
- IF reqtoolsbase THEN CloseLibrary(reqtoolsbase)
- IF cat THEN CloseCatalog(cat)
- IF localebase THEN CloseLibrary(localebase)
- ENDPROC
-
- strvers: CHAR '$VER: startupselectorprefs ',VERS,0
-
- monitors:
- CHAR 'IF EXISTS DEVS:Monitors\n'
- CHAR 'IF EXISTS DEVS:Monitors/VGAOnly\n'
- CHAR 'DEVS:Monitors/VGAOnly\n'
- CHAR 'EndIF\n'
- CHAR 'C:List >NIL: DEVS:Monitors/~(#?.info|VGAOnly) TO RAM:M LFORMAT "DEVS:Monitors/%s"\n'
- CHAR 'Execute RAM:M\n'
- CHAR 'C:Delete >NIL: RAM:M\n'
- CHAR 'EndIF\n'
- CHAR 0 -> EndOfFile
-
- executestr: CHAR 'Execute '
- scriptname: CHAR 'RAM:mon.sc',0
- startseq: CHAR 'Startup-Sequence',0
- prefsname: CHAR 'S:startupselector.prefs',0
- usename: CHAR 'RAM:startupselector.prefs',0